import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;


public class Raum {

	private int raumID;
	private String bezeichnung;
	private int    reihen;
	private int anzahl_je_reihe;
	private int reihen_loge=0;
	private int anzahl_je_reihe_loge=0;
	private Farbschema fs;
	ArrayList<Sitz> sitze = new ArrayList<Sitz>();
	
	/*
	
	public Raum (int reihen, int anzahl_je_reihe) {
		fs = new Farbschema();
		this.reihen = reihen;
		this.anzahl_je_reihe = anzahl_je_reihe;
		creat_place();
		
		
	}
	
	public Raum (int reihen, int anzahl_je_reihe,int reihen_loge, int anzahl_je_reihe_loge) {
		fs = new Farbschema();
		this.reihen = reihen;
		this.anzahl_je_reihe = anzahl_je_reihe;
		creat_place();
		this.reihen_loge = reihen_loge;
		this.anzahl_je_reihe_loge = anzahl_je_reihe_loge;
		creat_place_loge();
		
	}  */
	
	public Raum (Database db, int raumID) throws NumberFormatException, SQLException {
		
		fs = new Farbschema();
		
		this.raumID=raumID;
		ResultSet rs = db.getData("SELECT * FROM raum WHERE RaumID=" + raumID);
		rs.next();
		this.bezeichnung = rs.getString(2);
		//System.out.println(bezeichnung + " = Raumname");
		ResultSet rs1 = db.getData("SELECT * FROM raum WHERE RaumID=" + raumID);
		rs1.next();
		this.reihen = Integer.parseInt(rs1.getString(3));
		ResultSet rs2 = db.getData("SELECT * FROM raum WHERE RaumID=" + raumID);
		rs2.next();
		this.anzahl_je_reihe = Integer.parseInt(rs2.getString(4));
		String sitzidStart = raumID + "100";
		//System.out.println("Vor der Sitz Erstellung - Start bei: " + Integer.parseInt(sitzidStart) + " Reihen/Anzahl " + reihen + " / " + anzahl_je_reihe);
		read_and_write_place(Integer.parseInt(sitzidStart), db, reihen, anzahl_je_reihe);
		//System.out.println("Nach der Sitz Erstellung");
		ResultSet rs3 = db.getData("SELECT * FROM raum WHERE RaumID=" + raumID);
		rs3.next();
		this.reihen_loge = Integer.parseInt(rs3.getString(5));
		ResultSet rs4 = db.getData("SELECT * FROM raum WHERE RaumID=" + raumID);
		rs4.next();
		//System.out.println("Vor der Logensitzerstellung");
		this.anzahl_je_reihe_loge = Integer.parseInt(rs4.getString(6));
		//int temp=getAnzahl_der_Sitzplaetze();
		//Integer platznr = new Integer(temp);
		//Integer raumnr = new Integer(raumID);
		//String sitzidEnde = raumnr.toString() + platznr.toString();// + "";
		String sitzidEnde = raumID + "100";
		//System.out.println("Naechste Sitznummer = " + sitzidEnde);
		read_and_write_place(Integer.parseInt(sitzidEnde), db, reihen_loge, anzahl_je_reihe_loge);
	}
	
	public Raum (Database db, int raumID, int raumIdNeu) throws NumberFormatException, SQLException {
		fs = new Farbschema();
		
		this.raumID=db.findRaumTempID(raumID);
		ResultSet rs = db.getData("SELECT * FROM raum WHERE RaumID=" + raumID);
		rs.next();
		this.bezeichnung = rs.getString(2);
		//System.out.println(bezeichnung + "Raumname");
		ResultSet rs1 = db.getData("SELECT * FROM raum WHERE RaumID=" + raumID);
		rs1.next();
		this.reihen = Integer.parseInt(rs1.getString(3));
		ResultSet rs2 = db.getData("SELECT * FROM raum WHERE RaumID=" + raumID);
		rs2.next();
		this.anzahl_je_reihe = Integer.parseInt(rs2.getString(4));
		String sitzidStart = raumID + "100";
		//System.out.println("Vor der Sitz Erstellung - Start bei: " + Integer.parseInt(sitzidStart) + "Reihen/Anzahl " + reihen + " / " + anzahl_je_reihe);
		read_and_write_place(Integer.parseInt(sitzidStart), db, reihen, anzahl_je_reihe);
		//System.out.println("Nach der Sitz Erstellung");
		ResultSet rs3 = db.getData("SELECT * FROM raum WHERE RaumID=" + raumID);
		rs3.next();
		this.reihen_loge = Integer.parseInt(rs3.getString(5));
		ResultSet rs4 = db.getData("SELECT * FROM raum WHERE RaumID=" + raumID);
		rs4.next();
		//System.out.println("Vor der Logensitzerstellung");
		this.anzahl_je_reihe_loge = Integer.parseInt(rs4.getString(6));
		//int temp=getAnzahl_der_Sitzplaetze();
		//Integer platznr = new Integer(temp);
		//Integer raumnr = new Integer(raumID);
		//String sitzidEnde = raumnr.toString() + platznr.toString();// + "";
		String sitzidEnde = raumID + "100";
		//System.out.println("Naechste Sitznummer = " + sitzidEnde);
		read_and_write_place(Integer.parseInt(sitzidEnde), db, reihen_loge, anzahl_je_reihe_loge);
	}

/*
	
	public Raum(Raum roomVorlage) {
		fs = new Farbschema();
		this.reihen = roomVorlage.getReihen();
		this.anzahl_je_reihe = roomVorlage.getAnzahl_je_reihe();
		creat_place();
		this.bezeichnung = roomVorlage.getBezeichnung();
		this.reihen_loge = roomVorlage.getReihenLoge();
		this.anzahl_je_reihe_loge = roomVorlage.getAnzahl_je_reiheLoge();
		creat_place_loge();
	} */
	
	public Farbschema getFarbschema (){
		return fs;
	}
	
	public void setFarbschema (Farbschema fs){
		this.fs=fs;
	}

	public Sitz getSitzNrX(int x){
		return sitze.get(x);
	}
	
	public Sitz getSitz(int reihe, int nummer){
		Sitz place=null;
		for(int i=0;i<sitze.size();i++){
			if(sitze.get(i).getReihe()==reihe && sitze.get(i).getPlatznr()==nummer){
				place=sitze.get(i);
				break;
			}
		}
		
		return place;
	}

/*	private void creat_place() {
		for(int i=1;i<=reihen;i++)
			for(int s=1; s<=anzahl_je_reihe;s++){
				Sitz place = new Sitz (this,i,s,1,1);
			sitze.add(place);
			}
		
	}
	
	private void creat_place_loge() {
		for(int i=reihen+1;i<=reihenGesamt();i++)
			for(int s=1; s<=anzahl_je_reihe_loge;s++){
				Sitz place = new Sitz (this,i,s,2,1);
			sitze.add(place);
			}  
		
	}   */
	
	private void read_and_write_place(int id, Database db,int reihenzahl, int anzahl) throws SQLException {
		
		
		
		for(int i=1;i<=reihenzahl;i++) //<= 
			for(int s=1; s<=anzahl;s++){ //<=
				System.out.println("Anzahl Sitze: " + getAnzahl_der_Sitzplaetze());
				int tempid=getAnzahl_der_Sitzplaetze()+id;
				ResultSet rs = db.getData("SELECT * FROM sitze WHERE SitzID=" + tempid);
		        ResultSet rs2 = db.getData("SELECT * FROM sitze WHERE SitzID=" + tempid);
				
		        rs.next();
				String temp = rs.getString(4);
				
				rs2.next();
				String temp2 = rs2.getString(5);
				
				System.out.println("Erstelle Sitz " + tempid + " Nr." + s + " in Reihe " + i + " mit Status " + temp2 + " vom typ " + temp);
				Sitz place = new Sitz (i,s,Integer.parseInt(temp),Integer.parseInt(temp2), tempid);
			sitze.add(place);
			}
		
	}
	
	private int reihenGesamt() {
		int r = reihen + reihen_loge;
		return r;
	}


	public int getAnzahl_der_Sitzplaetze(){
		return sitze.size();
	}


	public String getBezeichnung() {
		return bezeichnung;
	}


	public void setBezeichnung(String bezeichnung) {
		this.bezeichnung = bezeichnung;
	}


	public int getReihen() {
		return reihen;
	}


	public void setReihe(int reihe) {
		this.reihen = reihe;
	}


	public int getAnzahl_je_reihe() {
		return anzahl_je_reihe;
	}


	public void setAnzahl_je_reihe(int anzahl_je_reihe) {
		this.anzahl_je_reihe = anzahl_je_reihe;
	}
	
	public int getReihenLoge() {
		return reihen_loge;
	}


	public void setReiheLoge(int reihe_loge) {
		this.reihen_loge = reihe_loge;
	}


	public int getAnzahl_je_reiheLoge() {
		return anzahl_je_reihe_loge;
	}


	public void setAnzahl_je_reiheLoge(int anzahl_je_reihe_loe) {
		this.anzahl_je_reihe_loge = anzahl_je_reihe_loge;
	}
}
